大家好,今天要介紹 Laravel 其中一個功能'加密',我會將這個加密加入我的專案實作之中。laravel的加密服務利用 AES-256 和 AES-128 加密通過 OpenSSL 加密和解密配置一個接口,並利用MAC進行簽名,底層值一旦加密後就無法修改及竄改。
首先我們利用以下指令產出一個key
php artisan key:generate
而其中 key:generate 是使用 php 的 secure random bytes generator 來產生一個加密安全密鑰。
接下來我們就可以使用Crypt來加密你想加密的值囉,我們到之前寫好的UserService中,在註冊的name把他加密起來,讓他不要直接存在DB當中。
Crypt::encryptString(username);
先把他dd出來看吧!使用我們之前寫好的command來測試。
這邊會看到被加密過的字串,那我們把它夾到create裡面就可以囉。
User::create([
'account' => $account,
'password' => Hash::make($password),
'name' => Crypt::encryptString($username),
]);
那我們在讀取的時候解密,改寫一下UserController裡的show()方法
public function show($id)
{
$user = User::select('id', 'name', 'account')->where('id', $id)->first();
$user->name = Crypt::decryptString($user->name);
return response()->json($user);
}
得到以下結果
好,今天介紹加解密,明天來學習Hash!